﻿using System;
using System.Collections.Generic;

namespace BeautyTech.Core.Domain.Catalogs
{
    public class Product : BaseEntity
    {

        #region Properties

        /// <summary>
        /// Gets or sets the Reference of the product
        /// </summary>
        public string Reference { get; set; }

        /// <summary>
        /// Gets or sets the name
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// Gets or sets the display name
        /// </summary>
        public string DisplayName { get; set; }

        /// <summary>
        /// Gets or sets the brand of the product
        /// </summary>
        public string Brand { get; set; }

        /// <summary>
        /// Gets or sets the short Description of the product
        /// </summary>
        public string ShortDescription { get; set; }

        /// <summary>
        /// Gets or sets the full Description of the product
        /// </summary>
        public string FullDescription { get; set; }

        /// <summary>
        /// Gets or sets the Supplier
        /// </summary>
        public string Supplier { get; set; }

        /// <summary>
        /// Gets or sets the price
        /// </summary>
        public decimal Price { get; set; }

        /// <summary>
        /// Gets or sets the stock quantity
        /// </summary>
        public int StockQuantity { get; set; }

        /// <summary>
        /// Gets or sets the weight
        /// </summary>
        public virtual decimal Weight { get; set; }

        /// <summary>
        /// Gets or sets the meta keywords
        /// </summary>
        public string MetaKeywords { get; set; }

        /// <summary>
        /// Gets or sets the meta description
        /// </summary>
        public string MetaDescription { get; set; }

        /// <summary>
        /// Gets or sets the meta title
        /// </summary>
        public string MetaTitle { get; set; }

        /// <summary>
        /// Gets or sets a display order. This value is used when sorting associated products (used with "grouped" products)
        /// </summary>
        public int DisplayOrder { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether the entity is published
        /// </summary>
        public bool Published { get; set; }

        /// <summary>
        /// Gets or sets the date and time of product creation
        /// </summary>
        public DateTime CreatedOn { get; set; }

        /// <summary>
        /// Gets or sets the date and time of product update
        /// </summary>
        public DateTime UpdatedOn { get; set; }

        #endregion

        public virtual ICollection<ProductCategory> ProductCategories { get; set; }
    }
}
